/*
题目描述
有10个学生，每个学生的数据包括学号、姓名、3门课程的成绩。
读入这10个学生的数据，要求输出3门课程的总平均成绩，以及个人平均分最高的学生的数据（包括学号、姓名、3门课程成绩、平均分数）。

输入
共有10行，每行包含了一个学生的学号（整数）、名字（长度不超过19的无空格字符串）和3门课程的成绩（0至100之间的整数），用空格隔开。

输出
第一行包含了3个实数，分别表示3门课程的总平均成绩，保留2位小数，每个数之后输出一个空格。
第二行输出个人平均分最高的学生的数据，与输入数据格式相同。
如果有多位个人平均分最高的学生，输出按照输入顺序第一个最高分的学生数据。
请注意行尾输出换行。
*/
#include <stdio.h>
struct student
{
    int num;
    char name[20];
    int scoreA;
    int scoreB;
    int scoreC;
};

double getStudentAverageScore(struct student students[10], int num)
{
    double sum = 0.0;
    sum += students[num].scoreA + students[num].scoreB + students[num].scoreC;
    return sum / 3;
}

double getCourseAverageScore(struct student students[10], int num)
{
    double sum = 0.0;
    for (int i = 0; i < 10; i++)
    {
        switch (num)
        {
        case 1:
            sum += students[i].scoreA;
            break;
        case 2:
            sum += students[i].scoreB;
            break;
        case 3:
            sum += students[i].scoreC;
            break;
        default:
            break;
        }
    }
    return sum / 10;
}

void printExcellentStudent(struct student students[10]){
    double max = getStudentAverageScore(students,0);
    for (int i = 0; i < 10; i++)
    {
        double score = getStudentAverageScore(students,i);
        if (max < score)
        {
            max = score;
        }
    }
    for (int i = 0; i < 10; i++)
    {
        if (max - getStudentAverageScore(students,i) < 1e-6)
        {
            printf("%d %s %d %d %d\n", students[i].num, students[i].name, students[i].scoreA, students[i].scoreB, students[i].scoreC);
        }
    }
}

int main()
{
    struct student students[10];
    for (int i = 0; i < 10; i++)
    {
        scanf("%d %s %d %d %d", &students[i].num, &students[i].name, &students[i].scoreA, &students[i].scoreB, &students[i].scoreC);
    }
    printf("%.2lf %.2lf %.2lf \n",getCourseAverageScore(students,1),getCourseAverageScore(students,2),getCourseAverageScore(students,3));
    printExcellentStudent(students);
}